/**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2017-2027 Chinazyjr,Inc.All Rights Reserved.
 */
package com.sys.midware.hbase.hcore.Handler;

import java.util.List;

import org.apache.hadoop.hbase.filter.Filter;

/**
 * 
 * <b>ClassName：</b> DBHandler <br/>
 * <b>Description：</b> 访问数据库的句柄对象 <br/>
 * <b>@author：</b> mobing <br/>
 * <b>@date：</b> 2016年1月7日 上午10:49:02 <br/>
 * <b>@version: </b>  <br/>
 */
public interface DBHandler {
    /**
     * 校验表是否存在
     * @param  
     * @return  boolean
     */
    public boolean isTableExists() throws Exception;
    /**
     * 执行创建DB表的过程
     * 
     * @param obj 创建表所需要的参数对象
     * @throws Exception 若创建失败则抛出异常
     */
    public void performCreate(Object obj) throws Exception;

    /**
     * 执行针对DB表的查询过程
     * 
     * @param obj 查询条件参数对象
     * @return 查询结果对象
     * @throws Exception 若查询过程失败则抛出异常
     */
    public Object performQuery(Object obj) throws Exception;
    public Object performQuery(byte[] rowKey, Filter filter ) throws Exception;

    /**
     * @param obj
     * @return
     * @throws Exception
     */
    public boolean existed(Object obj) throws Exception;

    /**
     * 执行添加数据记录过程
     * 
     * @param records 待添加的数据记录
     * @throws Exception 若添加失败则抛出异常
     */
    public void performInsert(List<Object> records) throws Exception;

    /**
     * 执行添加数据记录过程
     * 
     * @param record 待添加的数据记录
     * @throws Exception 若添加失败则抛出异常
     */
    public void performInsert(Object record) throws Exception;

    /**
     * 执行更新记录的过程
     * 
     * @param records 待更新的记录集合
     * @throws Exception 若更新失败则抛出异常
     */
    public void performUpdate(List<Object> records) throws Exception;

    /**
     * 执行更新记录的过程
     * 
     * @param records 待更新的记录
     * @throws Exception 若更新失败则抛出异常
     */
    public void performUpdate(Object record) throws Exception;

    /**
     * 执行删除记录的过程
     * 
     * @param records 待删除的记录集合
     * @throws Exception 若删除失败则抛出异常
     */
    public void performDelete(List<Object> records) throws Exception;

    /**
     * 执行删除记录的过程
     * 
     * @param records 待删除的记录
     * @throws Exception 若删除失败则抛出异常
     */
    public void performDelete(Object record) throws Exception;

    /**
     * 执行丢弃/删除DB表过程
     * 
     * @param obj 删除参数对象
     * @throws Exception 若删除失败则抛出异常
     */
    public void performDrop(Object obj) throws Exception;

    /**
     * 关闭DB连接
     * 
     * @throws Exception
     */
    public void close() throws Exception;
}
